import eventlet
# 1.调用monkey_patch改写系统io接口,以协程的方式调用
eventlet.monkey_patch()
import socketio
import eventlet.wsgi

# 2.创建sio对象
sio = socketio.Server(async_mode='eventlet')

# 3.创建app对象
app = socketio.Middleware(sio)

# 4.监听消息事件
@sio.on('connect')
def on_connect(sid, environ):
    """
    连接时调用
    :param sid:
    :param environ:
    :return:
    """
    msg = '欢迎 {} 来到天上人间聊天室'.format(sid)
    # 群发
    sio.emit('message', msg)

@sio.on('message')
def on_message(sid, data):
    """
    群发消息
    :param sid: 是客户端的唯一id
    :param data: 是客户端发过来的数据
    :return:
    """
    # 群发
    sio.emit('message', data)
    # 不让自己收到
    sio.emit('message', data, skip_sid=sid)

@sio.on('disconnect')
def on_disconnect(sid):
    """
    告诉其它sid离开了
    :param sid:
    :return:
    """
    msg = '{} 不开心,离开了'.format(sid)
    sio.emit('message', msg, skip_sid=sid)

# 5.创建一个socket对象
socket = eventlet.listen(('192.168.226.129', 8888))

# 6.启动聊天室
eventlet.wsgi.server(socket, app)
